using IQIGame.Onigao.Framework;
using System.Collections.Generic;

namespace IQIGame.Onigao.GamePlay
{
    [SerializableGroup(SerializableGroup.MainCityModuleConfig)]
    public partial class MainCitySceneConfig : IModularConfig
    {
        #region 原生配置字段
        /// <summary>
        /// 所有实体
        /// </summary>
        public IReadOnlyList<MainCityEntityConfig> entityConfigs;
        /// <summary>
        /// 默认出生位置
        /// </summary>
        public Vector3Int defaultBornPoint;
        #endregion 原生配置字段

        public BetterList<int, MainCityEntityConfig> entityMap { get; set; }

        /// <summary>
        /// 初始化方法主要是为了创建提高运行效率的（冗余的）缓存数据
        /// 没有直接生成到配置是因为可能存在（序列化支持不便/容易产生冗余，存储效率不高）等情况
        /// </summary>
        public void Init()
        {
            entityMap = new BetterList<int, MainCityEntityConfig>();
            for (int i = 0; i < entityConfigs.Count; i++)
            {
                MainCityEntityConfig config = entityConfigs[i];
                if (!entityMap.ContainsKey(config.id))
                {
                    entityMap.Add(config.id, config);
                }
            }
        }
    }
}
